package com.vm.action;

import java.io.IOException;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.xwork.StringUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.vm.dao.system.IMenu;
import com.vm.entity.Menu;
import com.vm.entity.User;

public class SystemAction extends ActionSuper {
	private IMenu menuDAO;
	private List<Menu> listMenu;
	private String menuId;
	private List<Menu> leftMenu;

	public String defaultFrame() {

		return SUCCESS;
	}

	public String top() {
//		User user = (User) this.getSession().get("user");
//		if (user.isSuperAdmin()) {
//			listMenu = menuDAO.findByParentid("0");
//		} else {
//			listMenu = menuDAO.findByParentid("0", user);
//			List<Menu> menuUrl = menuDAO.findUrlAll(user);
//			Map<String, String> grpUrlMap = new HashMap<String, String>();
//			grpUrlMap.put("System", "");
//			grpUrlMap.put("Frame", "");
//			grpUrlMap.put("announceAction", "");
//			grpUrlMap.put("Converse3DDownloadAction", "");
//			grpUrlMap.put("chartBrowseAction", "");
//			grpUrlMap.put("AISUtilAction", "");
//			for (Menu menu : menuUrl) {
//				if (menu.getUrl() != null && !"".equals(menu.getUrl())) {
//					try {
//						String urlAction = menu.getUrl().substring(
//								menu.getUrl().lastIndexOf("/") + 1,
//								menu.getUrl().indexOf("_"));
//						grpUrlMap.put(urlAction, menu.getPrmssCd());
//					} catch (Exception e) {
//						continue;
//					}
//				}
//			}
//			user.setGrpUrlMap(grpUrlMap);
//		}
		return SUCCESS;
	}
	
	public String bottom(){
		return SUCCESS;
	}

	public String left() {
//		User user = (User) this.getSession().get("user");
//		if (!"0".equals(menuId)) {
//			if (user.isSuperAdmin()) {
//				leftMenu = menuDAO.findByParentid(menuId);
//			} else {
//				leftMenu = menuDAO.findByParentid(menuId, user);
//				String[] menuCd = menuDAO.getGrpValues(user.getMenuGrpId());
//				for(Menu mu: leftMenu){
//					Set<Menu> newSet = new LinkedHashSet<Menu>();
//					Iterator<Menu> it=mu.getChildren().iterator();
//					while(it.hasNext()){ 
//						Menu smu=(Menu) it.next(); 
//						for(int i=0;i<menuCd.length;i++){
//							if(menuCd[i].equals(smu.getPrmssCd()) && smu.getVldMrk()==1){
//								newSet.add(smu);
//								break;
//							}
//						}
//					} 
//					mu.setChildren(newSet);
//				}
//			}
//		}
		return SUCCESS;
	}
	
	/**
	 * 加载右框架信息
	 * @return
	 * @throws Exception
	 */
	public String onLoadRight() throws Exception {
		ActionContext context=ActionContext.getContext();
		HttpServletResponse response=(HttpServletResponse) context.get(ServletActionContext.HTTP_RESPONSE);
		response.setContentType("text/plain;charset=UTF-8");
		User user = (User) this.getSession().get("user");
		String url="";
		if (user.isSuperAdmin()) {
			leftMenu = menuDAO.findByParentid(menuId);
			Menu mu = leftMenu.get(0); // 取出第一条菜单记录
			Iterator<Menu> it = mu.getChildren().iterator();
			while (it.hasNext()) {
				Menu smu = (Menu) it.next();
				if (StringUtils.isEmpty(url)) {
					url = smu.getUrl();
				}
				break;
			}
			
		} else {
			leftMenu = menuDAO.findByParentid(menuId, user);
			String[] menuCd = menuDAO.getGrpValues(user.getMenuGrpId());
			if (!leftMenu.isEmpty() && leftMenu.size() > 0) {
				Menu mu = leftMenu.get(0); // 取出第一条菜单记录
				Iterator<Menu> it = mu.getChildren().iterator();
				// 第一条子菜单记录  　
				while (it.hasNext()) {
					Menu smu = (Menu) it.next();
					for (int i = 0; i < menuCd.length; i++) {
						if (menuCd[i].equals(smu.getPrmssCd())
								&& smu.getVldMrk() == 1) {
							if (StringUtils.isEmpty(url)) {
								url = smu.getUrl();
							}
							break;
						}
					}
				}
			} 
		}
		try { 
			  //当没有子菜单时显示首页公告
			  response.getWriter().print(!StringUtils.isEmpty(url)?url:"/home/announceAction_list.do");
			  response.getWriter().close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public String welcomeLeft() {
		User user = (User) this.getSession().get("user");
		if (!"0".equals(menuId)) {
			if (user.isSuperAdmin()) {
				listMenu = menuDAO.findByParentid("0");
				if(listMenu != null && listMenu.size()>0){
					leftMenu = menuDAO.findByParentid(listMenu.get(0).getId());
				}
			} else {
				listMenu = menuDAO.findByParentid("0", user);
				if(listMenu != null && listMenu.size()>0){
					leftMenu = menuDAO.findByParentid(listMenu.get(0).getId(),user);
				}
			}
		}
		return SUCCESS;
	}
	
	public String footer() {

		return SUCCESS;
	}

	public String right() {

		return SUCCESS;
	}

	public String tree() {

		return SUCCESS;
	}

	public void setMenuDAO(IMenu menuDAO) {
		this.menuDAO = menuDAO;
	}

	public List<Menu> getListMenu() {
		return listMenu;
	}

	public void setListMenu(List<Menu> listMenu) {
		this.listMenu = listMenu;
	}

	public String getMenuId() {
		return menuId;
	}

	public void setMenuId(String menuId) {
		this.menuId = menuId;
	}

	public IMenu getMenuDAO() {
		return menuDAO;
	}

	public List<Menu> getLeftMenu() {
		return leftMenu;
	}

	public void setLeftMenu(List<Menu> leftMenu) {
		this.leftMenu = leftMenu;
	}

}
